#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

{{>licenceInfo}}

{{#imports}}#import "{{import}}ManagedObject.h"
{{/imports}}
{{newline}}
{{#models}}
{{#model}}

NS_ASSUME_NONNULL_BEGIN
{{#isArrayModel}}

@interface {{classname}}ManagedObject : NSManagedObject

@property (nullable, nonatomic, retain) NSOrderedSet<{{{arrayModelType}}}ManagedObject*>* entries;

{{/isArrayModel}}{{^isArrayModel}}
@interface {{classname}}ManagedObject : {{#parent}}{{{parent}}}ManagedObject{{/parent}}{{^parent}}NSManagedObject{{/parent}}

{{#vars}}
{{#description}}/* {{{description}}} {{^required}}[optional]{{/required}}
 */{{/description}}
@property (nullable, nonatomic, retain) {{^complexType}}{{{ datatype }}}{{/complexType}}{{#complexType}}{{#isListContainer}}NSOrderedSet<{{{complexType}}}ManagedObject*>*{{/isListContainer}}{{^isListContainer}}{{#isMapContainer}}{{{ datatype }}}{{/isMapContainer}}{{^isMapContainer}}{{{complexType}}}ManagedObject*{{/isMapContainer}}{{/isListContainer}}{{/complexType}} {{name}};
{{/vars}}
{{/isArrayModel}}
@end

@interface {{classname}}ManagedObject (GeneratedAccessors)
{{#isArrayModel}}
- (void)addEntriesObject:({{arrayModelType}}ManagedObject *)value;
- (void)removeEntriesObject:({{arrayModelType}}ManagedObject *)value;
- (void)addEntries:(NSOrderedSet<{{{arrayModelType}}}ManagedObject*> *)values;
- (void)removeEntries:(NSOrderedSet<{{{arrayModelType}}}ManagedObject*> *)values;
{{/isArrayModel}}
{{^isArrayModel}}
{{#vars}}{{#isListContainer}}{{#complexType}}- (void)add{{vendorExtensions.x-uppercase-name}}Object:({{complexType}}ManagedObject *)value;
- (void)remove{{vendorExtensions.x-uppercase-name}}Object:({{complexType}}ManagedObject *)value;
- (void)add{{vendorExtensions.x-uppercase-name}}:(NSOrderedSet<{{{complexType}}}ManagedObject*> *)values;
- (void)remove{{vendorExtensions.x-uppercase-name}}:(NSOrderedSet<{{{complexType}}}ManagedObject*> *)values;
{{/complexType}}{{/isListContainer}}{{/vars}}
{{/isArrayModel}}
@end


NS_ASSUME_NONNULL_END
{{/model}}
{{/models}}